package it.webrules.deploymanager.core;

import it.webrules.deploymanager.core.config.ConfigurationException;
import it.webrules.deploymanager.core.config.ConfigurationService;
import it.webrules.deploymanager.core.dy.build.CIException;
import it.webrules.deploymanager.core.dy.deploy.AvailableServerException;
import it.webrules.deploymanager.core.dy.deploy.DeployException;
import it.webrules.deploymanager.core.dy.repos.RepositoryException;
import it.webrules.deploymanager.core.st.scm.SCMException;

/**
 * 
 * This interface must implemented by every Function implemented in DeployManager
 * 
 * @author dometec
 *
 */
public interface Function {

	boolean canManage(ConfigurationService configurationService);

	Object start(ConfigurationService configurationService) throws ConfigurationException, CIException, RepositoryException,
			AvailableServerException, DeployException, SCMException;

}